Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 47.83 KB | None | 0 0
  1. var AdwordsUrls = {
  2. store: '/reports/adwords/{0}/ajax/{1}',
  3. chart: '/reports/adwords/{0}/csvChart/{1}',
  4. widget: '/widgets/addFromStat/{0}/{1}/adwords',
  5. csv: '/reports/adwords/{0}/csv/{1}'
  6. };
  7.  
  8. Global.settings.adwords = function () {
  9. var currencyFormat = function (val, meta, rec, rowId, colId, store) {
  10. var st = store.store || store,
  11. currency, info;
  12. if (undefined == val) {
  13. return 'н/у';
  14. }
  15. currency = (st.tbarValues && st.tbarValues.currency && st.tbarValues.currency.length) ? st.tbarValues.currency : PHP_VARS.adwords.currency;
  16. info = PHP_VARS.currencies[currency];
  17.  
  18. return Ext.String.format('{0}{1}{2}', info.prefix, number_format(val, 2), info.postfix);
  19. };
  20.  
  21. return {
  22. showTbarTagsFilter: true,
  23. selection: {
  24. url: Ext.String.format('/reports/adwords/{0}/select_campaigns', PHP_VARS.clientId),
  25. params: {},
  26.  
  27. model: 'model_select_adwords',
  28. fields: [
  29. {name: 'campaign_id', type: 'int'},
  30. {name: 'name', type: 'string'},
  31. {name: 'status', type: 'string'}
  32. ],
  33. idProperty: 'campaign_id',
  34.  
  35. columns: [{
  36. text: __('Id кампании'),
  37. width: 120,
  38. filter: {
  39. type: 'multinumber',
  40. operators: ['in', 'not_in'],
  41. },
  42. sortable: true,
  43. dataIndex: 'campaign_id'
  44. }, {
  45. text: __('Кампания'),
  46. flex: 1,
  47. filter: 'multistring',
  48. sortable: true,
  49. dataIndex: 'name',
  50. renderer: rendererCampaignWithTags
  51. }, {
  52. text: __('Статус'),
  53. flex: 1,
  54. sortable: true,
  55. dataIndex: 'status',
  56. renderer: function (val) {
  57. var trans = {
  58. ENABLED: __('Активна'),
  59. PAUSED: __('Приостановлена'),
  60. REMOVED: __('Удалена')
  61. },
  62. value = trans[val];
  63.  
  64. return value || val;
  65. },
  66. filter: {
  67. type: 'list',
  68. options: [
  69. ['ENABLED', __('Активна')],
  70. ['PAUSED', __('Приостановлена')],
  71. ['REMOVED', __('Удалена')]
  72. ]
  73. }
  74.  
  75. }]
  76. },
  77. controlColumns: {
  78. orderGroups: [
  79. __('Измерения Google Adwords'),
  80. __('Метрики Google Adwords'),
  81. __('Метрики Аналитики'),
  82. __('Метрики Аналитических систем, CallTracking'),
  83. __('Пользовательские метрики')
  84. ],
  85. getGroupMetric: function (metric) {
  86. var addAdwordsMetrics = [
  87. 'keyword_first_page_cpc',
  88. 'keyword_top_of_page_cpc',
  89. 'keyword_first_position_cpc',
  90. 'keyword_quality_score',
  91. 'awsc:estimated_total_conversions',
  92. 'awsg:estimated_total_conversions',
  93. 'metric:Adwords_CPC',
  94. 'metric:Adwords_CTR',
  95. 'metric:Adwords_CTR_Top',
  96. 'metric:Adwords_CTR_Other',
  97. 'metric:Adwords_Avg_Position',
  98. 'metric:Adwords_Quality_Score',
  99. 'metric:Adwords_First_Page_CPC',
  100. 'metric:Adwords_Top_Of_Page_CPC',
  101. 'metric:Adwords_First_Position_CPC',
  102. 'metric:Adwords_Impression_Share_Search'
  103. ],
  104. addAnalyticsMetrics = [
  105. 'metric:Pageviews_Per_Session',
  106. 'metric:Avg_Session_Duration',
  107. 'metric:BR_total'
  108. ];
  109.  
  110. if (0 == metric.indexOf('aw:') || Ext.Array.contains(addAdwordsMetrics, metric)) {
  111. return __('Метрики Google Adwords');
  112.  
  113. } else if (0 == metric.indexOf('g:') || Ext.Array.contains(addAnalyticsMetrics, metric)) {
  114. return __('Метрики Аналитики');
  115.  
  116. } else if (0 == metric.indexOf('metric:')) {
  117. return __('Пользовательские метрики');
  118.  
  119. } else if (0 == metric.indexOf('orders:')) {
  120. return __('Метрики Аналитических систем, CallTracking');
  121. }
  122.  
  123. return __('Измерения Google Adwords');
  124. }
  125. },
  126. excludeColumns: [
  127. 'aw:avg_position',
  128. 'aw:quality_score',
  129. 'aw:first_page_cpc',
  130. 'aw:top_of_page_cpc',
  131. 'aw:first_position_cpc'
  132. ],
  133. tabs: {
  134. campaigns: {
  135. title_tab: __('Кампании'),
  136. title_chart: __('Диаграмма метрик кампаний'),
  137.  
  138. urlStore: Ext.String.format(AdwordsUrls.store, PHP_VARS.clientId, 'campaigns'),
  139. urlChart: Ext.String.format(AdwordsUrls.chart, PHP_VARS.clientId, 'campaigns'),
  140. urlCsv: Ext.String.format(AdwordsUrls.csv, PHP_VARS.clientId, 'campaigns'),
  141. urlWidget: Ext.String.format(AdwordsUrls.widget, PHP_VARS.clientId, 'campaigns'),
  142.  
  143. showSeries: [
  144. 'aw:sum',
  145. 'aw:clicks',
  146. 'g:transactions',
  147. 'metric:ДОЛЯ_ПОКАЗОВ_СПЕЦ'
  148. ],
  149. showColumns: [
  150. 'campaign_id',
  151. 'campaign_name',
  152. 'aw:sum',
  153. 'aw:clicks',
  154. 'aw:shows',
  155. //'aw:converted_clicks',
  156. //'awsc:estimated_total_conversions',
  157. 'g:transactions',
  158. 'metric:ДОЛЯ_ПОКАЗОВ_СПЕЦ',
  159. 'metric:CTR_поиск_спец'
  160. ],
  161. fields: [
  162. {name: 'fakeId', type: 'string'},
  163.  
  164. {name: 'date', type: 'date'},
  165. {name: 'week', type: 'string'},
  166. {name: 'month', type: 'string'},
  167. {name: 'year', type: 'int'},
  168.  
  169. {name: 'campaign_id', type: 'int'},
  170. {name: 'campaign_name', type: 'string'},
  171. {name: 'campaign_status', type: 'string'}
  172.  
  173. ],
  174. columns: [{
  175. text: __('Дата'),
  176. width: 90,
  177. sortable: true,
  178. groupable: false,
  179. dataIndex: 'date',
  180. renderer: rendererDateColumn
  181. }, {
  182. text: __('Id кампании'),
  183. width: 115,
  184. align: 'right',
  185. filter: {
  186. type: 'multinumber',
  187. operators: ['in', 'not_in'],
  188. needCreateStore: {}
  189. },
  190. sortable: true,
  191. groupable: false,
  192. dataIndex: 'campaign_id'
  193. }, {
  194. text: __('Кампания'),
  195. width: 300,
  196. filter: {
  197. type: 'multistring',
  198. needCreateStore: {}
  199. },
  200. sortable: true,
  201. hideable: false,
  202. groupable: false,
  203. dataIndex: 'campaign_name',
  204. renderer: rendererCampaignWithTags
  205. }, {
  206. text: __('Статус'),
  207. flex: 0.5,
  208. sortable: true,
  209. groupable: false,
  210. dataIndex: 'campaign_status',
  211. renderer: function (val) {
  212. var trans = {
  213. ENABLED: __('Активна'),
  214. PAUSED: __('Приостановлена'),
  215. REMOVED: __('Удалена')
  216. },
  217. value = trans[val];
  218.  
  219. return value || val;
  220. },
  221. filter: {
  222. type: 'list',
  223. options: [
  224. ['ENABLED', __('Активна')],
  225. ['PAUSED', __('Приостановлена')],
  226. ['REMOVED', __('Удалена')]
  227. ]
  228. }
  229. }, {
  230. text: __('Стратегия К50'),
  231. flex: 0.7,
  232. filter: filterStrategy,
  233. sortable: true,
  234. groupable: false,
  235. dataIndex: 'strategy_id',
  236. renderer: rendererStrategy
  237. }],
  238.  
  239. store_config: {
  240. fillParams: function (params) {
  241. var store = this,
  242. tabs = store.my_grid.getTabs(),
  243. inclTags = tabs.down('#id_tags_include').getValue(),
  244. exclTags = tabs.down('#id_tags_exclude').getValue(),
  245. filter = {};
  246.  
  247. if (inclTags.length) {
  248. filter.in = k50Stat.Tags.findIds(inclTags, 'adwords', 'campaigns');
  249. }
  250. if (exclTags.length) {
  251. filter.not_in = k50Stat.Tags.findIds(exclTags, 'adwords', 'campaigns');
  252. }
  253.  
  254. if (Ext.Object.getKeys(filter).length) {
  255. params.campaign_id = Ext.JSON.encode(filter);
  256. } else {
  257. delete params.campaign_id;
  258. }
  259.  
  260. return params;
  261. },
  262.  
  263. isValidParams: function (params) {
  264. return !!(params && params.grouping && params.grouping.length);
  265. }
  266. },
  267.  
  268. forceSelectCampaign: false
  269. },
  270. groups: {
  271. title_tab: __('Группы объявлений'),
  272. title_chart: __('Диаграмма метрик групп объявлений выбранных кампаний'),
  273.  
  274. urlStore: Ext.String.format(AdwordsUrls.store, PHP_VARS.clientId, 'groups'),
  275. urlChart: Ext.String.format(AdwordsUrls.chart, PHP_VARS.clientId, 'groups'),
  276. urlCsv: Ext.String.format(AdwordsUrls.csv, PHP_VARS.clientId, 'groups'),
  277. urlWidget: Ext.String.format(AdwordsUrls.widget, PHP_VARS.clientId, 'groups'),
  278. showSeries: [
  279. 'aw:sum',
  280. 'aw:clicks',
  281. 'g:transactions',
  282. 'metric:ДОЛЯ_ПОКАЗОВ_СПЕЦ'
  283. ],
  284. showColumns: [
  285. 'group_id',
  286. 'group_name',
  287. 'group_active',
  288. 'aw:sum',
  289. 'aw:clicks',
  290. 'aw:shows',
  291. //'aw:converted_clicks',
  292. //'awsg:estimated_total_conversions',
  293. 'g:transactions',
  294. 'metric:ДОЛЯ_ПОКАЗОВ_СПЕЦ',
  295. 'metric:CTR_поиск_спец'
  296. ],
  297.  
  298. fields: [
  299. {name: 'fakeId', type: 'string'},
  300.  
  301. {name: 'date', type: 'date'},
  302. {name: 'week', type: 'string'},
  303. {name: 'month', type: 'string'},
  304. {name: 'year', type: 'int'},
  305.  
  306. {name: 'group_id', type: 'int'},
  307. {name: 'group_name', type: 'string'},
  308. {name: 'group_status', type: 'string'},
  309. {name: 'group_bid', type: 'number'},
  310. //{name: 'group_active', type: 'boolean'},
  311.  
  312. {name: 'campaign_id', type: 'int'},
  313. {name: 'campaign_name', type: 'string'}
  314. ],
  315.  
  316. columns: [{
  317. text: __('Дата'),
  318. width: 90,
  319. sortable: true,
  320. groupable: false,
  321. dataIndex: 'date',
  322. renderer: rendererDateColumn
  323. }, {
  324. text: __('Id группы'),
  325. width: 130,
  326. align: 'right',
  327. filter: {
  328. type: 'multinumber',
  329. operators: ['in', 'not_in'],
  330. needCreateStore: {}
  331. },
  332. sortable: true,
  333. dataIndex: 'group_id'
  334. }, {
  335. text: __('Id кампании'),
  336. width: 115,
  337. align: 'right',
  338. sortable: true,
  339. groupable: false,
  340. dataIndex: 'campaign_id'
  341. }, {
  342. text: __('Кампания'),
  343. width: 300,
  344. sortable: true,
  345. groupable: false,
  346. dataIndex: 'campaign_name',
  347. renderer: rendererCampaignWithTags
  348. }, {
  349. text: __('Название группы'),
  350. width: 300,
  351. filter: 'multistring',
  352. sortable: true,
  353. hideable: false,
  354. dataIndex: 'group_name'
  355. }, {
  356. text: __('Статус группы'),
  357. width: 50,
  358. sortable: true,
  359. dataIndex: 'group_status',
  360. renderer: function (val) {
  361. var trans = {
  362. ENABLED: __('Активна'),
  363. PAUSED: __('Приостановлена'),
  364. REMOVED: __('Удалена')
  365. },
  366. value = trans[val];
  367.  
  368. return value || val;
  369. },
  370. filter: {
  371. type: 'list',
  372. options: [
  373. ['ENABLED', __('Активна')],
  374. ['PAUSED', __('Приостановлена')],
  375. ['REMOVED', __('Удалена')]
  376. ]
  377. }
  378. }, {
  379. text: __('Ставка для группы'),
  380. flex: 1,
  381. align: 'right',
  382. filter: true,
  383. sortable: true,
  384. groupable: false,
  385. dataIndex: 'group_bid',
  386. renderer: currencyFormat
  387. }],
  388.  
  389. grid_config: {
  390. viewConfig: {
  391. emptyText: __('Пусто... Добавьте кампании (слева)'),
  392. deferEmptyText: false
  393. }
  394. }
  395. },
  396.  
  397. ads: {
  398. title_tab: __('Объявления'),
  399. title_chart: __('Диаграмма метрик объявлений выбранных кампаний'),
  400.  
  401. urlStore: Ext.String.format(AdwordsUrls.store, PHP_VARS.clientId, 'ads'),
  402. urlChart: Ext.String.format(AdwordsUrls.chart, PHP_VARS.clientId, 'ads'),
  403. urlCsv: Ext.String.format(AdwordsUrls.csv, PHP_VARS.clientId, 'ads'),
  404. urlWidget: Ext.String.format(AdwordsUrls.widget, PHP_VARS.clientId, 'ads'),
  405. showSeries: [
  406. 'aw:sum',
  407. 'aw:clicks',
  408. 'g:transactions',
  409. 'metric:ДОЛЯ_ПОКАЗОВ_СПЕЦ'
  410. ],
  411. showColumns: [
  412. 'ad_id',
  413. 'ad_type',
  414. 'ad_status',
  415. 'aw:sum',
  416. 'aw:clicks',
  417. 'aw:shows',
  418. 'g:transactions',
  419. 'metric:ДОЛЯ_ПОКАЗОВ_СПЕЦ',
  420. 'metric:CTR_поиск_спец'
  421. ],
  422.  
  423. fields: [
  424. {name: 'fakeId', type: 'string'},
  425.  
  426. {name: 'date', type: 'date'},
  427. {name: 'week', type: 'string'},
  428. {name: 'month', type: 'string'},
  429. {name: 'year', type: 'int'},
  430.  
  431. {name: 'ad_id', type: 'int'},
  432. {name: 'ad_type', type: 'string'},
  433. {name: 'ad_k50_type', type: 'string'},
  434. {name: 'ad_k50_subtype', type: 'string'},
  435. {name: 'ad_status', type: 'string'},
  436. {name: 'approval_status', type: 'string'},
  437. {name: 'approval_status', type: 'string'},
  438. {name: 'ad_url', type: 'string'},
  439. {name: 'display_url', type: 'string'},
  440. {name: 'path1', type: 'string'},
  441. {name: 'path2', type: 'string'},
  442. {name: 'headline', type: 'string'},
  443. {name: 'headline_part1', type: 'string'},
  444. {name: 'headline_part2', type: 'string'},
  445. {name: 'short_headline', type: 'string'},
  446. {name: 'long_headline', type: 'string'},
  447. {name: 'description', type: 'string'},
  448. {name: 'description1', type: 'string'},
  449. {name: 'description2', type: 'string'},
  450. {name: 'device_preference_int', type: 'int'},
  451. {name: 'tracking_url_template', type: 'string'},
  452.  
  453. {name: 'campaign_id', type: 'int'},
  454. {name: 'campaign_name', type: 'string'},
  455.  
  456. {name: 'group_id', type: 'int'},
  457. {name: 'group_name', type: 'string'}
  458. ],
  459.  
  460. columns: [{
  461. text: __('Дата'),
  462. width: 90,
  463. sortable: true,
  464. groupable: false,
  465. dataIndex: 'date',
  466. renderer: rendererDateColumn
  467. }, {
  468. text: __('Id объявления'),
  469. width: 100,
  470. align: 'right',
  471. filter: {
  472. type: 'multinumber',
  473. operators: ['in', 'not_in'],
  474. needCreateStore: {}
  475. },
  476. sortable: true,
  477. hideable: false,
  478. groupable: false,
  479. dataIndex: 'ad_id'
  480. }, {
  481. text: __('Adwords тип объявления'),
  482. width: 300,
  483. sortable: true,
  484. hideable: false,
  485. groupable: false,
  486. dataIndex: 'ad_type',
  487. filter: {
  488. type: 'list',
  489. options: [
  490. ['EXPANDED_TEXT_AD', 'EXPANDED_TEXT_AD'],
  491. ['TEXT_AD', 'TEXT_AD'],
  492. ['DYNAMIC_SEARCH_AD', 'DYNAMIC_SEARCH_AD'],
  493. ['CALL_ONLY_AD', 'CALL_ONLY_AD'],
  494. ['RESPONSIVE_DISPLAY_AD', 'RESPONSIVE_DISPLAY_AD'],
  495. ['IMAGE_AD', 'IMAGE_AD'],
  496. ['TEMPLATE_AD', 'TEMPLATE_AD'],
  497. ['THIRD_PARTY_REDIRECT_AD', 'THIRD_PARTY_REDIRECT_AD'],
  498. ]
  499. }
  500. }, {
  501. text: __('K50 тип объявления'),
  502. width: 300,
  503. sortable: true,
  504. groupable: false,
  505. dataIndex: 'ad_k50_type',
  506. filter: {
  507. type: 'list',
  508. options: [
  509. ['DEPRECATED_K50_AD_TYPE', __('Устаревший формат объявления')],
  510. ['IMAGE_K50_AD_TYPE', __('Графическое объявление')],
  511. ['PRODUCT_K50_AD_TYPE', __('Товарное объявление')],
  512. ['TEXT_K50_AD_TYPE', __('Текстовое объявление')],
  513. ['RICH_MEDIA_K50_AD_TYPE', __('Объявления RichMedia')],
  514. ['DYNAMIC_SEARCH_K50_AD_TYPE', __('Динамическое поисковое объявление')],
  515. ['CALL_ONLY_K50_AD_TYPE', __('Только номер телефона')],
  516. ['RESPONSIVE_DISPLAY_K50_AD_TYPE', __('Адаптивное объявление')],
  517. ['VIDEO_K50_AD_TYPE', __('Видеообъявления')],
  518. ['LIGHTBOX_K50_AD_TYPE', __('Лайтбокс')],
  519. ['MEDIA_K50_AD_TYPE', __('Медийное объявление')],
  520. ['GMAIL_K50_AD_TYPE', __('Реклама Gmail')],
  521. ['APPLICATIONS_K50_AD_TYPE', __('Реклама приложений')],
  522. ['TEMPLATE_K50_AD_TYPE', __('Шаблонное объявление')],
  523. ['UNKNOWN_K50_AD_TYPE', __('Неизвестный формат объявления')],
  524. ]
  525. },
  526. renderer: function (val) {
  527. var trans = {
  528. DEPRECATED_K50_AD_TYPE: __('Устаревший формат объявления'),
  529. IMAGE_K50_AD_TYPE: __('Графическое объявление'),
  530. PRODUCT_K50_AD_TYPE: __('Товарное объявление'),
  531. TEXT_K50_AD_TYPE: __('Текстовое объявление'),
  532. RICH_MEDIA_K50_AD_TYPE: __('Объявления RichMedia'),
  533. DYNAMIC_SEARCH_K50_AD_TYPE: __('Динамическое поисковое объявление'),
  534. CALL_ONLY_K50_AD_TYPE: __('Только номер телефона'),
  535. RESPONSIVE_DISPLAY_K50_AD_TYPE: __('Адаптивное объявление'),
  536. VIDEO_K50_AD_TYPE: __('Видеообъявления'),
  537. LIGHTBOX_K50_AD_TYPE: __('Лайтбокс'),
  538. MEDIA_K50_AD_TYPE: __('Медийное объявление'),
  539. GMAIL_K50_AD_TYPE: __('Реклама Gmail'),
  540. APPLICATIONS_K50_AD_TYPE: __('Реклама приложений'),
  541. TEMPLATE_K50_AD_TYPE: __('Шаблонное объявление'),
  542. UNKNOWN_K50_AD_TYPE: __('Неизвестный формат объявления'),
  543. },
  544. value = trans[val];
  545.  
  546. return value || val;
  547. }
  548. }, {
  549. text: __('Подтип шаблонного объявления'),
  550. width: 300,
  551. sortable: true,
  552. groupable: false,
  553. dataIndex: 'ad_k50_subtype',
  554. filter: {
  555. type: 'list',
  556. options: [
  557. ['IN_STREAM_K50_AD_SUBTYPE', __('Объявление In-stream')],
  558. ['TRUE_VIEW_IN_SEARCH_K50_AD_SUBTYPE', 'TrueView in-search'],
  559. ['YOUTUBE_PROMOTED_VIDEOS_ON_GOOGLE_SEARCH_K50_AD_SUBTYPE', __('Продвижение youtube роликов на поиске Google')],
  560. ['IN_VIDEO_K50_AD_SUBTYPE', __('Объявление In-video')],
  561. ['GMAIL_IMAGE_K50_AD_SUBTYPE', __('Шаблон для Gmail: изображение')],
  562. ['GMAIL_MULTI_PRODUCT_K50_AD_SUBTYPE', __('Шаблон для Gmail: несколько товаров')],
  563. ['GMAIL_SINGLE_PROMOTION_K50_AD_SUBTYPE', __('Шаблон для Gmail: однократное объявление')],
  564. ['APP_ENGAGEMENT_K50_AD_SUBTYPE', __('Объявление, ориентированное на взаимодействие с мобильным приложением')],
  565. ['APP_INSTALL_K50_AD_SUBTYPE', __('Объявление, ориентированное на установку приложения')],
  566. ['APP_REENGAGEMENT_K50_AD_SUBTYPE', __('Объявление, ориентированное на повторное взаимодействие с мобильным приложением')],
  567. ['APP_INSTALL_CUSTOM_HTML5_K50_AD_SUBTYPE', __('HTML5 Объявление, ориентированное на установку приложения')],
  568. ['APP_IMAGE_ENGAGEMENT_K50_AD_SUBTYPE', __('Графическое объявление, ориентированное на взаимодействие с мобильным приложением')],
  569. ['APP_IMAGE_INSTALL_K50_AD_SUBTYPE', __('Графическое объявление, ориентированное на установку приложения')],
  570. ['APP_VIDEO_INSTALL_K50_AD_SUBTYPE', __('Видеообъявление с функцией установки приложения')],
  571. ]
  572. },
  573. renderer: function (val) {
  574. var trans = {
  575. IN_STREAM_K50_AD_SUBTYPE: __('Объявление In-stream'),
  576. TRUE_VIEW_IN_SEARCH_K50_AD_SUBTYPE: 'TrueView in-search',
  577. YOUTUBE_PROMOTED_VIDEOS_ON_GOOGLE_SEARCH_K50_AD_SUBTYPE: __('Продвижение youtube роликов на поиске Google'),
  578. IN_VIDEO_K50_AD_SUBTYPE: __('Объявление In-video'),
  579. GMAIL_IMAGE_K50_AD_SUBTYPE: __('Шаблон для Gmail: изображение'),
  580. GMAIL_MULTI_PRODUCT_K50_AD_SUBTYPE: __('Шаблон для Gmail: несколько товаров'),
  581. GMAIL_SINGLE_PROMOTION_K50_AD_SUBTYPE: __('Шаблон для Gmail: однократное объявление'),
  582. APP_ENGAGEMENT_K50_AD_SUBTYPE: __('Объявление, ориентированное на взаимодействие с мобильным приложением'),
  583. APP_INSTALL_K50_AD_SUBTYPE: __('Объявление, ориентированное на установку приложения'),
  584. APP_REENGAGEMENT_K50_AD_SUBTYPE: __('Объявление, ориентированное на повторное взаимодействие с мобильным приложением'),
  585. APP_INSTALL_CUSTOM_HTML5_K50_AD_SUBTYPE: __('HTML5 Объявление, ориентированное на установку приложения'),
  586. APP_IMAGE_ENGAGEMENT_K50_AD_SUBTYPE: __('Графическое объявление, ориентированное на взаимодействие с мобильным приложением'),
  587. APP_IMAGE_INSTALL_K50_AD_SUBTYPE: __('Графическое объявление, ориентированное на установку приложения'),
  588. APP_VIDEO_INSTALL_K50_AD_SUBTYPE: __('Видеообъявление с функцией установки приложения'),
  589. },
  590. value = trans[val],
  591. templateId;
  592.  
  593. if (!value && val.length && ~val.indexOf('TEMPLATE_K50_AD_SUBTYPE_')) {
  594. templateId = val.replace('TEMPLATE_K50_AD_SUBTYPE_', '');
  595. value = 'ID: ' + templateId;
  596. }
  597.  
  598. return value || val;
  599. }
  600. }, {
  601. text: __('Id кампании'),
  602. width: 115,
  603. align: 'right',
  604. sortable: true,
  605. groupable: false,
  606. dataIndex: 'campaign_id'
  607. }, {
  608. text: __('Кампания'),
  609. width: 300,
  610. sortable: true,
  611. groupable: true,
  612. dataIndex: 'campaign_name',
  613. renderer: rendererCampaignWithTags
  614. }, {
  615. text: __('Id группы'),
  616. width: 130,
  617. align: 'right',
  618. filter: {
  619. type: 'multinumber',
  620. operators: ['in', 'not_in'],
  621. needCreateStore: {}
  622. },
  623. sortable: true,
  624. groupable: false,
  625. dataIndex: 'group_id'
  626. }, {
  627. text: __('Наименование группы'),
  628. width: 300,
  629. filter: 'multistring',
  630. sortable: true,
  631. groupable: true,
  632. dataIndex: 'group_name'
  633. }, {
  634. text: __('Статус объявления'),
  635. flex: 1,
  636. sortable: true,
  637. groupable: false,
  638. dataIndex: 'ad_status',
  639. renderer: function (val) {
  640. var trans = {
  641. ENABLED: __('Активно'),
  642. PAUSED: __('Приостановлено'),
  643. DISABLED: __('Отключено')
  644. },
  645. value = trans[val];
  646.  
  647. return value || val;
  648. },
  649. filter: {
  650. type: 'list',
  651. options: [
  652. ['ENABLED', __('Активно')],
  653. ['PAUSED', __('Приостановлено')],
  654. ['DISABLED', __('Отключено')]
  655. ]
  656. }
  657. }, {
  658. text: __('Статус одобрения'),
  659. flex: 1,
  660. sortable: true,
  661. groupable: false,
  662. dataIndex: 'approval_status',
  663. renderer: function (val) {
  664. var trans = {
  665. APPROVED: __('Одобрено'),
  666. DISAPPROVED: __('Отклонено'),
  667. FAMILY_SAFE: __('Одобрено - family safe'),
  668. NON_FAMILY_SAFE: __('Одобрено - non-family safe'),
  669. PORN: __('Одобрено - контент для взрослых'),
  670. UNCHECKED: __('Ожидает модерации'),
  671. UNKNOWN: __('- нет данных -')
  672. },
  673. value = trans[val];
  674.  
  675. return value || val;
  676. },
  677. filter: {
  678. type: 'list',
  679. options: [
  680. ['APPROVED', __('Одобрено')],
  681. ['DISAPPROVED', __('Отклонено')],
  682. ['FAMILY_SAFE', __('Одобрено - family safe')],
  683. ['NON_FAMILY_SAFE', __('Одобрено - non-family safe')],
  684. ['PORN', __('Одобрено - контент для взрослых')],
  685. ['UNCHECKED', __('Ожидает модерации')],
  686. ['UNKNOWN', __('- нет данных -')]
  687. ]
  688. }
  689. }, {
  690. text: __('URL объявления'),
  691. flex: 1,
  692. filter: 'multistring',
  693. sortable: true,
  694. dataIndex: 'ad_url'
  695. }, {
  696. text: __('Отображаемый URL'),
  697. flex: 1,
  698. filter: 'multistring',
  699. sortable: true,
  700. dataIndex: 'display_url'
  701. }, {
  702. text: __('Путь 1'),
  703. flex: 1,
  704. filter: 'multistring',
  705. sortable: true,
  706. dataIndex: 'path1'
  707. }, {
  708. text: __('Путь 2'),
  709. flex: 1,
  710. filter: 'multistring',
  711. sortable: true,
  712. dataIndex: 'path2'
  713. }, {
  714. text: __('Заголовок объявления'),
  715. flex: 1,
  716. filter: 'multistring',
  717. sortable: true,
  718. dataIndex: 'headline'
  719. }, {
  720. text: __('Заголовок 1'),
  721. flex: 1,
  722. filter: 'multistring',
  723. sortable: true,
  724. dataIndex: 'headline_part1'
  725. }, {
  726. text: __('Заголовок 2'),
  727. flex: 1,
  728. filter: 'multistring',
  729. sortable: true,
  730. dataIndex: 'headline_part2'
  731. }, {
  732. text: __('Краткий заголовок'),
  733. flex: 1,
  734. filter: 'multistring',
  735. sortable: true,
  736. dataIndex: 'short_headline'
  737. }, {
  738. text: __('Длинный заголовок'),
  739. flex: 1,
  740. filter: 'multistring',
  741. sortable: true,
  742. dataIndex: 'long_headline'
  743. }, {
  744. text: __('Описание'),
  745. flex: 1,
  746. filter: 'multistring',
  747. sortable: true,
  748. dataIndex: 'description'
  749. }, {
  750. text: __('Строка описания 1'),
  751. flex: 1,
  752. filter: 'multistring',
  753. sortable: true,
  754. dataIndex: 'description1'
  755. }, {
  756. text: __('Строка описания 2'),
  757. flex: 1,
  758. filter: 'multistring',
  759. sortable: true,
  760. dataIndex: 'description2'
  761. }, {
  762. text: __('Шаблон отслеживания'),
  763. flex: 1,
  764. filter: 'multistring',
  765. sortable: true,
  766. dataIndex: 'tracking_url_template'
  767. }, {
  768. text: __('Адаптировано для моб. устройств'),
  769. flex: 1,
  770. sortable: true,
  771. dataIndex: 'device_preference_int',
  772. renderer: function (val) {
  773. var trans = {
  774. 0: __('не адаптировано'),
  775. 30001: __('адаптировано'),
  776. },
  777. value = trans[val];
  778.  
  779. return value || val;
  780. },
  781. filter: {
  782. type: 'list',
  783. options: [
  784. [0, __('не адаптировано')],
  785. [30001, __('адаптировано')],
  786. ]
  787. }
  788. }],
  789.  
  790. grid_config: {
  791. viewConfig: {
  792. emptyText: __('Пусто... Добавьте кампании (слева)'),
  793. deferEmptyText: false
  794. }
  795. }
  796. },
  797.  
  798. keywords: {
  799. title_tab: __('Ключи'),
  800. title_chart: __('Диаграмма метрик ключей выбранных кампаний'),
  801.  
  802. urlStore: Ext.String.format(AdwordsUrls.store, PHP_VARS.clientId, 'keywords'),
  803. urlChart: Ext.String.format(AdwordsUrls.chart, PHP_VARS.clientId, 'keywords'),
  804. urlCsv: Ext.String.format(AdwordsUrls.csv, PHP_VARS.clientId, 'keywords'),
  805. urlWidget: Ext.String.format(AdwordsUrls.widget, PHP_VARS.clientId, 'keywords'),
  806. showSeries: [
  807. 'aw:sum',
  808. 'aw:clicks',
  809. 'g:transactions',
  810. 'metric:ДОЛЯ_ПОКАЗОВ_СПЕЦ'
  811. ],
  812. showColumns: [
  813. 'keyword_id',
  814. 'keyword_text_view',
  815. 'keyword_bid',
  816. 'aw:sum',
  817. 'aw:clicks',
  818. 'aw:shows',
  819. //'aw:converted_clicks',
  820. 'g:transactions',
  821. 'metric:ДОЛЯ_ПОКАЗОВ_СПЕЦ',
  822. 'metric:CTR_поиск_спец'
  823. ],
  824.  
  825. fields: [
  826. {name: 'fakeId', type: 'string'},
  827.  
  828. {name: 'date', type: 'date'},
  829. {name: 'week', type: 'string'},
  830. {name: 'month', type: 'string'},
  831. {name: 'year', type: 'int'},
  832.  
  833. {name: 'k50id', type: 'int'},
  834. {name: 'keyword_id', type: 'int'},
  835. {name: 'keyword_text_view', type: 'string'},
  836. {name: 'keyword_bid', type: 'number'},
  837. {name: 'keyword_status', type: 'string'},
  838. {name: 'match_type', type: 'string'},
  839. {name: 'destination_url', type: 'string'},
  840. {name: 'keyword_first_page_cpc', type: 'number'},
  841. {name: 'keyword_top_of_page_cpc', type: 'number'},
  842. {name: 'keyword_first_position_cpc', type: 'number'},
  843. {name: 'keyword_quality_score', type: 'int'},
  844.  
  845. {name: 'campaign_id', type: 'int'},
  846. {name: 'campaign_name', type: 'string'},
  847.  
  848. {name: 'group_id', type: 'int'},
  849. {name: 'group_name', type: 'string'},
  850. {name: 'group_bid', type: 'number'}
  851. ],
  852.  
  853. columns: [{
  854. text: __('Дата'),
  855. width: 90,
  856. sortable: true,
  857. groupable: false,
  858. dataIndex: 'date',
  859. renderer: rendererDateColumn
  860. }, {
  861. text: __('Id ключа'),
  862. width: 95,
  863. align: 'right',
  864. filter: {
  865. type: 'multinumber',
  866. operators: ['in', 'not_in'],
  867. needCreateStore: {}
  868. },
  869. sortable: true,
  870. groupable: false,
  871. dataIndex: 'keyword_id'
  872. }, {
  873. text: 'k50id',
  874. width: 60,
  875. align: 'right',
  876. filter: {
  877. type: 'multinumber',
  878. operators: ['in', 'not_in'],
  879. needCreateStore: {}
  880. },
  881. sortable: true,
  882. groupable: false,
  883. dataIndex: 'k50id'
  884. }, {
  885. text: __('Id кампании'),
  886. width: 115,
  887. align: 'right',
  888. sortable: true,
  889. groupable: false,
  890. dataIndex: 'campaign_id'
  891. }, {
  892. text: __('Кампания'),
  893. width: 300,
  894. sortable: true,
  895. groupable: true,
  896. dataIndex: 'campaign_name',
  897. renderer: rendererCampaignWithTags
  898. }, {
  899. text: __('Id группы'),
  900. width: 130,
  901. align: 'right',
  902. filter: {
  903. type: 'multinumber',
  904. operators: ['in', 'not_in'],
  905. needCreateStore: {}
  906. },
  907. sortable: true,
  908. groupable: false,
  909. dataIndex: 'group_id'
  910. }, {
  911. text: __('Наименование группы'),
  912. width: 300,
  913. filter: 'multistring',
  914. sortable: true,
  915. groupable: true,
  916. dataIndex: 'group_name'
  917. }, {
  918. text: __('Ставка для группы'),
  919. flex: 1,
  920. align: 'right',
  921. filter: true,
  922. sortable: true,
  923. groupable: false,
  924. dataIndex: 'group_bid',
  925. renderer: currencyFormat
  926. }, {
  927. text: __('Ключевое слово'),
  928. width: 300,
  929. filter: 'multistring',
  930. sortable: true,
  931. hideable: false,
  932. groupable: false,
  933. dataIndex: 'keyword_text_view'
  934. }, {
  935. text: 'URL',
  936. width: 300,
  937. filter: 'multistring',
  938. sortable: true,
  939. groupable: false,
  940. dataIndex: 'destination_url'
  941. }, {
  942. text: __('Тип соответствия'),
  943. width: 300,
  944. sortable: true,
  945. groupable: false,
  946. dataIndex: 'match_type',
  947. filter: {
  948. type: 'list',
  949. options: [
  950. ['BROAD', __('Широкое')],
  951. ['PHRASE', __('Фразовое')],
  952. ['EXACT', __('Точное')]
  953. ]
  954. },
  955. renderer: function (val) {
  956. var trans = {
  957. BROAD: __('Широкое'),
  958. PHRASE: __('Фразовое'),
  959. EXACT: __('Точное')
  960. },
  961. value = trans[val];
  962.  
  963. return value || val;
  964. }
  965. }, {
  966. text: __('Ставка ключа'),
  967. flex: 1,
  968. align: 'right',
  969. filter: true,
  970. sortable: true,
  971. groupable: false,
  972. dataIndex: 'keyword_bid',
  973. renderer: currencyFormat
  974. }, {
  975. text: __('Ставка для первой страницы'),
  976. flex: 1,
  977. align: 'right',
  978. filter: true,
  979. sortable: true,
  980. groupable: false,
  981. dataIndex: 'keyword_first_page_cpc',
  982. renderer: currencyFormat
  983. }, {
  984. text: __('Ставка для показа вверху страницы'),
  985. flex: 1,
  986. align: 'right',
  987. filter: true,
  988. sortable: true,
  989. groupable: false,
  990. dataIndex: 'keyword_top_of_page_cpc',
  991. renderer: currencyFormat
  992. }, {
  993. text: __('Ставка 1го места вверху страницы'),
  994. flex: 1,
  995. align: 'right',
  996. filter: true,
  997. sortable: true,
  998. groupable: false,
  999. dataIndex: 'keyword_first_position_cpc',
  1000. renderer: currencyFormat
  1001. }, {
  1002. text: __('Показатель Качества'),
  1003. flex: 1,
  1004. align: 'right',
  1005. filter: true,
  1006. sortable: true,
  1007. groupable: false,
  1008. dataIndex: 'keyword_quality_score'
  1009. }, {
  1010. text: __('Статус ключа'),
  1011. flex: 1,
  1012. //align: 'right',
  1013. sortable: true,
  1014. groupable: false,
  1015. dataIndex: 'keyword_status',
  1016. renderer: function (val) {
  1017. var trans = {
  1018. ENABLED: __('Активен'),
  1019. PAUSED: __('Приостановлен'),
  1020. REMOVED: __('Удален')
  1021. },
  1022. value = trans[val];
  1023.  
  1024. return value || val;
  1025. },
  1026. filter: {
  1027. type: 'list',
  1028. options: [
  1029. ['ENABLED', __('Активен')],
  1030. ['PAUSED', __('Приостановлен')],
  1031. ['REMOVED', __('Удален')]
  1032. ]
  1033. }
  1034. }],
  1035.  
  1036. grid_config: {
  1037. viewConfig: {
  1038. emptyText: __('Пусто... Добавьте кампании (слева)'),
  1039. deferEmptyText: false
  1040. }
  1041. }
  1042. }
  1043. }
  1044. };
  1045. }();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement