• Как сделать глобальный singleton config?

    @InfoLabs Автор вопроса
    Переел видимо я сникерсов. В итоге нужно было взглянуть один раз на док.

    Все довольно просто оказалось. И да, по умолчанию модули являются синглтонами, спасибо Negwereth .
    config.js
    let createConfig = (obj1, obj2) => {
      obj1 = obj1 || {
        state: {}
      };
    
      return Object.assign(obj1, obj2);
    };
    
    export let config = createConfig(null, window.video_player_config);
    
    export const setConfig = (newConfig) =>  {
      config = createConfig(null, newConfig);
    };


    index.js
    import { config, setConfig } from './config';
    Ответ написан
    Комментировать
  • Как передать массив в процедуру?

    @InfoLabs Автор вопроса
    Решение простое, вот приведу небольшой пример:
    var a1,a2: array [1..10] of integer;
    var b1,b2: array of integer;
    a1 := a2; // копируется содержимое
    b1 := b2; // копируется указатель


    Что происходит? А то, что если передавать в процедуру в качестве параметра заранее статический массив, получите содержимое его, без возможности редактирования. Используйте динамические массивы. Вопрос исчерпан!
    Ответ написан
    Комментировать
  • Как сократить кол-во запросов yii2 при GridView?

    @InfoLabs Автор вопроса
    Решение:
    public function getOrdersAggregation()
        {
            return $this->getOrders()
                ->select(['status', 'count' => 'count(*)'])
                ->groupBy('status')
                ->asArray(true);
        }
    
        public function getOrdersStatusCount(int $status) : int
        {
            if( empty($this->ordersAggregation) ) {
                return 0;
            }
    
            $result = ArrayHelper::map($this->ordersAggregation, 'status', 'count');
    
            if( ! array_key_exists($status, $result) ) {
                return 0;
            }
    
            return $result[ $status ];
        }
    Ответ написан
    Комментировать